package main

import (
	"fmt"
	"reflect"
)

// func reflectValue(x interface{}) {
// 	fmt.Println(x)
// 	// var num = 10+x
// 	// 使用类型断言
// 	// b,_:=x.(int)
// 	// var num = 10+ b
// 	// fmt.Println(num)

// 	// 反射实现
// 	// v :=reflect.ValueOf(x)
// 	// fmt.Println(v)
// 	// var n =v + 12
// 	// fmt.Println(n)

// 	// 使用反射获取变量的原始值
// 	// v :=reflect.ValueOf(x)
// 	// // 通过v.Int获取原始值
// 	// var m =v.Int()+12
// 	// fmt.Println(m)
// }
func reflectValue(x interface{}){
	v :=reflect.ValueOf(x)
	// 通过valueOf 返回的kind来获取种类
	kind :=v.Kind()
	switch kind{
	case reflect.Int:
		fmt.Printf("int类型的原始值:%v\n",v.Int()+10)
	case reflect.Float32:
		fmt.Printf("Float32的原始值:%v\n",v.Float()+10.1)
	case reflect.Float64:
		fmt.Printf("Float64的原始值:%v\n",v.Float()+10.1)
	case reflect.String:
		fmt.Printf("String类型的原始值:%v\n",v.String())
	default:
		fmt.Printf("还没有判断这个类型\n")
	}
}
func main() {
	var a = 13
	var b int64 =100
	var c string="你好golang"
	reflectValue(b)
	reflectValue(c)
	reflectValue(a)
}